#ifndef PLUGINMANAGER_H
#define PLUGINMANAGER_H

#include <QObject>
#include <QList>
#include <QPluginLoader>
#include <systeminfoplugininterface.h>

/**
 * @brief 插件管理器
 */
class PluginManager : public QObject
{
    Q_OBJECT
public:
    explicit PluginManager(QObject *parent = nullptr);

    /**
     * @brief 从文件夹加载插件
     * @param pluginPath
     */
    void loadPluginsFromFolder(const QString &pluginPath);

    /**
     * @brief 卸载所有插件
     */
    void unloadAllPlugins();

    /**
     * @brief 获取插件列表
     */
    QList<std::shared_ptr<SystemInfoPluginInterface>> getPlugins() const;

private:
    QList<std::shared_ptr<SystemInfoPluginInterface>> plugins;
};

#endif // PLUGINMANAGER_H
